using JustinAngel.MetroBlog.Common.IoC;
using JustinAngel.MetroBlog.Services.BlogPostService;
using JustinAngel.MetroBlog.Services.CategoryService;
using JustinAngel.MetroBlog.Services.CommentService;
using JustinAngel.MetroBlog.Services.DBContextContainer;
using JustinAngel.MetroBlog.Services.Repository;
using JustinAngel.MetroBlog.Services.UserService;
using JustinAngel.MetroBlog.UI.Core.Email;
using JustinAngel.MetroBlog.UI.Core.Feeds;
using JustinAngel.MetroBlog.UI.Core.MetaWeblog;

namespace JustinAngel.MetroBlog._Code
{
    public static class Initializer
    {
        public static void RegisterIoC()
        {
            IoC.Register<IUserService, UserService>();
            IoC.Register<ICategoryService, CategoryService>();
            IoC.Register<IDBContextContainer, DBContextContainer>();
            IoC.Register<IBlogPostService, BlogPostService>();
            IoC.Register<IMetaWeblog, MetaWeblogAPI>();
            IoC.Register<IFeed, Feed>();
            IoC.Register<IFeedRequestService, FeedRequestService>();
            IoC.Register(typeof(IRepository<>), typeof(EntityFrameworkRepository<>));
            IoC.Register<IEmailService, EmailService>();
            IoC.Register<ICommentEmailService, CommentEmailService>();
            IoC.Register<ICommentService, CommentService>();
        }
    }
}